import pika
import time

# 创建连接对象，配置账号密码和地址
parameters = pika.URLParameters('amqp://root:123qwe@118.89.175.35:5672/%2F')
connection = pika.BlockingConnection(parameters)
# connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
# 需要确认队列是存在的。我们可以多次使用queue_declare命令来创建同一个队列，但是只有一个队列会被真正的创建。
# durable=True 开启持久化
channel.queue_declare(queue='task_queue', durable=True)
print(' [*] Waiting for messages. To exit press CTRL+C')


def callback(ch, method, properties, body):
    print(" [x] Received %r" % body.decode())
    print(body)
    time.sleep(body.count(b'.'))
    print(" [x] Done")
    ch.basic_ack(delivery_tag=method.delivery_tag)


# 使用basic.qos方法，并设置prefetch_count=1
# RabbitMQ就会把消息分发给下一个空闲的工作者（worker）。
channel.basic_qos(prefetch_count=True)
channel.basic_consume(queue='task_queue', on_message_callback=callback)

channel.start_consuming()
